草庐IT

hadoop - 压缩格式和分隔符序列

全部标签

ruby-on-rails - 我如何序列化 - 反序列化哈希以将其保存在数据库中?

我有一个散列:h={"revision"=>7,"rev"=>"708a4bd5b","thumb_exists"=>false,"bytes"=>246000,"modified"=>"Sun,01Jul201217:09:15+0000","client_mtime"=>"Sun,01Jul201217:09:15+0000","path"=>"/GettingStarted.pdf","is_dir"=>false,"icon"=>"page_white_acrobat","root"=>"dropbox","mime_type"=>"application/pdf","size

ruby - 确保字符串是时间或日期格式?

我有一个将字符串解析为日期的方法,但我想验证我没有尝试解析非数字字符串或代表日期或时间格式的字符串?如何识别这个?目前我有:if(string=~/^\D*$/){returnfalseelsedosomething_else}这对于像"UNKNOWN"这样的非数字字符串很好,但不适用于"UNKNOWN1"知道我可以使用什么来确保只解析日期或时间格式吗? 最佳答案 DateTime.strptimevParseDate.parsedate没有双关语的意思,但此处的信息现在已过时(2015年),一些方法和模块已从Ruby2.x中删除我

ruby-on-rails - Rails 中字段的自定义序列化

有没有一种方法可以对Rails中的字段进行自定义序列化,一种在保存和加载字段时运行的方法,用于将最终保存在数据库中的字符串转换为字符串/转换为字符串。具体来说,我想要做的是有一个类型符号的字段,如性别,可能的值是:男性和:女性,在数据库中存储“男性”和“女性”。有一些解决方法,例如:defgenderread_attribute(:gender).try(:to_sym)end但这会使obj.attributes保持不变,因此这是一个有漏洞的抽象。 最佳答案 您可以在Rails3.1中做到这一点。您要序列化的对象必须响应load和d

ruby-on-rails - 如何改进用 `' ` 引用所有数组元素并返回包含所有这些引用和逗号分隔元素的字符串的代码?

我正在使用Rails3.2.2,我想用'引用所有数组元素并返回一个包含所有这些引用和逗号分隔元素的字符串。这时候我在用['a','b','c'].collect{|x|"'#{x}'"}.join(",")#=>"'a','b','c'"但我认为我可以改进上面的代码(也许通过使用一个我不知道的Ruby方法,如果它存在的话)。可能吗? 最佳答案 我用"'#{%w{abc}.join("','")}'"这里是扩展版:'#Startingquote%w{abc}.join("','")#Joinarraywith','delimitert

ruby - 如何将带回溯的 ruby​​ 异常格式化为字符串

我有一个异常e,我想将它转换成一个与标准ruby​​输出完全相同的字符串在未捕获异常时在stderr上。初始代码给出了错误的堆栈跟踪顺序,并且缩进不正确。与其编写我自己的代码,我更希望看到一些“oneliner”。你是怎么做到的? 最佳答案 这将是相同的。puts"#{$@.first}:#{$!.message}(#{$!.class})",$@.drop(1).map{|s|"\t#{s}"}或者,使用e:puts"#{e.backtrace.first}:#{e.message}(#{e.class})",e.backtrac

ruby-on-rails - 更改 faker gem 电话号码格式

有没有办法控制faker生成的电话号码的格式?当我打电话时:Faker::PhoneNumber.cell_phone.to_i我最终得到了错误的值。我也不想有扩展。 最佳答案 您可以像这样即时设置自定义格式:Faker::Base.numerify('+90(###)#######')这将解决您的问题。 关于ruby-on-rails-更改fakergem电话号码格式,我们在StackOverflow上找到一个类似的问题: https://stackover

ruby - 在带有 Ruby 的 Sinatra 中使用 gzip 压缩

注意:我有另一个类似的问题,关于如何使用Ruby的zlib对数据进行GZIP压缩,技术上得到了回答,我觉得我不能开始改进这个问题,因为它已经回答了,所以虽然这个问题是相关的,但并不相同......以下代码(我相信)是对静态CSS文件进行GZIP压缩并将结果存储在result变量中。但是从某种意义上说,我该怎么做:我怎样才能将这些数据发送回浏览器,以便它被识别为GZIP压缩而不是原始文件大小(例如,当检查我的YSlow分数时,我想看到它正确标记我确保我GZIP静态资源)。z=Zlib::Deflate.new(6,31)z.deflate(File.read('public/Assets

ruby - 如何控制要使用 YAML 序列化的字段

例如,classPointattr_accessor:x,:y,:pointer_to_something_hugeend我只想序列化x和y并将其他所有内容保留为nil。 最佳答案 在Ruby1.9中,to_yaml_propertiesisdeprecated;如果您使用的是Ruby1.9,则更适合future的证明方法是使用encode_with:classPointdefencode_withcodercoder['x']=@xcoder['y']=@yendend在这种情况下,这就是您所需要的,因为默认情况下是在从Yaml加

Ruby one liner 将数组元素传递到带有分隔符的字符串中

我有一个这样的数组:myarray=['value1','value2','value3']我正在寻找这样的单元素数组:mynewarray=['value1|value2|value3']我知道如何使用each并连接成一个字符串来做到这一点,但我想知道是否有一种单行代码和漂亮的Ruby方式来做到这一点...... 最佳答案 您可以使用Array#join方法。myarray.join('|')Array#joindoc:返回通过将数组的每个元素转换为一个字符串,由sep分隔。["a","b","c"].join#=>"abc"["

ruby-on-rails - 如何在 Ruby 中将 MS Excel 日期从 float 转换为日期格式?

尝试在ruby​​脚本中使用roogem解析XLSX文件。在Excel中,日期以DDDDD.ttttt格式存储为float或整数,从1900-01-00(00no01)开始计算。因此,为了转换诸如40396之类的日期-您将使用1900-01-00+40396,您应该得到2010-10-15,但我得到的是2010-08-08。我正在使用active_support/time进行这样的计算:Time.new("1900-01-01")+40396.days我的计算有误还是主动支持有问题?我在Windows7+最新的active_supportgem(3.2.1)上运行ruby​​1.9.3